{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4fab1c4c-bb2b-4c85-a148-f1c5e4df7d2d",
   "metadata": {},
   "source": [
    "Chapter 15\n",
    "# 最短路径问题，无向图\n",
    "Book_6《数据有道》 | 鸢尾花书：从加减乘除到机器学习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a19cbfc5-6800-4516-a0a1-a810be37818a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1b800cdb-5aec-47c6-a57c-da440ad699cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建图\n",
    "G = nx.Graph()\n",
    "G.add_nodes_from([\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\"])\n",
    "G.add_edge(\"A\", \"B\", weight=4)\n",
    "G.add_edge(\"A\", \"H\", weight=8)\n",
    "G.add_edge(\"B\", \"C\", weight=8)\n",
    "G.add_edge(\"B\", \"H\", weight=11)\n",
    "G.add_edge(\"C\", \"D\", weight=7)\n",
    "G.add_edge(\"C\", \"F\", weight=4)\n",
    "G.add_edge(\"C\", \"I\", weight=2)\n",
    "G.add_edge(\"D\", \"E\", weight=9)\n",
    "G.add_edge(\"D\", \"F\", weight=14)\n",
    "G.add_edge(\"E\", \"F\", weight=10)\n",
    "G.add_edge(\"F\", \"G\", weight=2)\n",
    "G.add_edge(\"G\", \"H\", weight=1)\n",
    "G.add_edge(\"G\", \"I\", weight=6)\n",
    "G.add_edge(\"H\", \"I\", weight=7)\n",
    "\n",
    "pos = nx.spring_layout(G, seed = 8)\n",
    "edge_labels = {(u, v): d[\"weight\"] for u, v, d in G.edges(data=True)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "63f14509-5484-4649-a799-c40db0df01fb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (6,6))\n",
    "nx.draw_networkx(G, \n",
    "                 pos = pos,\n",
    "                 node_color = '#0058FF',\n",
    "                 node_size = 180)\n",
    "nx.draw_networkx_edge_labels(G, \n",
    "                             pos = pos,\n",
    "                             edge_labels=edge_labels)\n",
    "plt.savefig('无向图.svg')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7f68fa0-5e99-4353-afa9-4bd84532c231",
   "metadata": {},
   "source": [
    "## 指定两节点最短距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "2fe94b22-6bc8-40bf-90ce-357891376793",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 确定是否存在路径\n",
    "\n",
    "nx.has_path(G, \n",
    "            source = \"A\", # 始点\n",
    "            target = \"E\", # 终点\n",
    "           )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "68dc9694-65fd-4524-a57d-01f60100025c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['A', 'H', 'G', 'F', 'E']\n"
     ]
    }
   ],
   "source": [
    "# 找到A、E节点之间的最短距离，考虑权重\n",
    "path_A_2_E = nx.shortest_path(G, \n",
    "                              source = \"A\", # 始点\n",
    "                              target = \"E\", # 终点\n",
    "                              weight=\"weight\")\n",
    "print(path_A_2_E)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c86e9018-3791-405d-9be1-add4bf1de333",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "21"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最短距离值\n",
    "nx.shortest_path_length(G, \n",
    "                        source = \"A\", # 始点\n",
    "                        target = \"E\", # 终点\n",
    "                        weight=\"weight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b9815c66-6dd9-470c-b946-39194c35b9e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 最短路径的边，列表的每个元素为元组\n",
    "# 元组有两个元素，代表边的两个节点\n",
    "path_edges = list(zip(path_A_2_E, path_A_2_E[1:]))\n",
    "\n",
    "# 最短路径所在边：红色\n",
    "# 其他边：黑色\n",
    "edge_colors = [\"#FF5800\" \n",
    "               if edge in path_edges \n",
    "                       or tuple(reversed(edge)) in path_edges \n",
    "               else \"black\" for edge in G.edges()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c212fe74-5c30-47a4-ba77-02c559d81911",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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bGeq33//nbZt2xIaGsrSpUspWrSo1SW5PQWyXOjEAYg/oQldNpbRNlOstX//fnbs2MGwYcNITU3lxIkTHDp0iFOnThEXF0dCQgInTpygcWPP63a3bt062rVrR6NGjViyZInC2EUUyHIhTeiyvcjISEJDQ60uo8BzOp2EhoYybNgwGjVqlOVrxowZw08//ZTPleWt3377jXbt2nHzzTezePFiihQpYnVJHkPXkOVC4WEQXAGKX291JXIZOmVtDyEhIbRq1Yr//vsPIMtryampqZQuXTq/S8sza9eupV27djRp0kRhnAc0QpYLaYcnW0tNTSUqKkqBbANVq1blySefpHDhwgA4suhq169fP5KSkvK7tDyxZs0aOnTowC233MKiRYsICAiwuiSPo0CWc5xOc1OJLqOtrkQu49ixYxiGoUC2AR8fn8xr+YZhZLkV5o033oivr/vvJ/7rr7/SoUMHmjZtyg8//KAwziM6ZS3nHN0LifEaIdtYdHQ0QUFBCmSbudy+1GPHjuX777/P32Jc7JdffqFDhw40a9ZMI+M8phGynBORMaHL82aFeooGDRoQGxuLYRhWl1LgRUZGkpKSQpEiRfD19cXX1xdvb28cDgc+Pj6kpaXx/fffU716datLvWarVq2iU6dONG/enIULF+Lv7291SR5NgSznhIdBmepQpLjVlchVXG5EJvlnzJgxrFq1imLFilGkSBGKFy+eeStZsiRBQUEcPHjQbc9m/Pvvv3Tq1Ik77riD7777TmGcDxTIco4mdIlkW1hYGA0bNuS2227jxIkTHD9+nJMnT3LgwAFOnTrF6dOnSUlJcds145UrV2bmzJn06NEjc+Ka5C0FspjSUmH/Vri1l9WViLiFKlWq0LhxY5577rksn3c6nRQuXNiWI8vjx48TFRVFvXr1rvi6fv365VNFAprUJRkO7YDUJI2QRbKpb9++FCtWjMTERJxOJ2lpaZm39PR0Dh06REBAAMHBwVaXeoGMIB4zZgwbNmywuhw5j0bIYooIAy8HVGxodSUibqFXr16kpqZmbvJx8TrkcuXKsW7dOkqVKmVFeZcVHh7OqVOnOHPmDO+99x4Oh4MmTZoAl1++JflDI2QxRWyE8nWgsDrv2NWVdhWS/OdwOK6445aPjw916tTJx4qyp169erRv356+ffuyZ88e3nrrLbZt2wbo75jVFMhi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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化图\n",
    "plt.figure(figsize = (6,6))\n",
    "# 路径上的节点\n",
    "nx.draw_networkx_nodes(G, pos, \n",
    "                       nodelist = path_A_2_E,\n",
    "                       node_color = '#FF5800',\n",
    "                       node_size = 180)\n",
    "\n",
    "# 路径之外其他节点\n",
    "not_path_A_2_E = set(G.nodes()) - set(path_A_2_E)\n",
    "nx.draw_networkx_nodes(G, pos, \n",
    "                       nodelist = not_path_A_2_E,\n",
    "                       node_color = '#0058FF',\n",
    "                       node_size = 180)\n",
    "\n",
    "nx.draw_networkx_edges(G, pos, \n",
    "                       edge_color=edge_colors)\n",
    "\n",
    "nx.draw_networkx_labels(G, pos)\n",
    "nx.draw_networkx_edge_labels(\n",
    "    G, pos, edge_labels=edge_labels)\n",
    "\n",
    "plt.savefig('A、E最短距离.svg')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7bc58446-b59f-43c6-b7ba-5a25470bce45",
   "metadata": {},
   "source": [
    "## 起点为A的所有最短路径"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "326d5e1c-8c49-4511-a398-400535f290ac",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'A': ['A'], 'B': ['A', 'B'], 'H': ['A', 'H'], 'C': ['A', 'B', 'C'], 'G': ['A', 'H', 'G'], 'I': ['A', 'B', 'C', 'I'], 'F': ['A', 'H', 'G', 'F'], 'D': ['A', 'B', 'C', 'D'], 'E': ['A', 'H', 'G', 'F', 'E']}\n"
     ]
    }
   ],
   "source": [
    "path_from_A = nx.shortest_path(G, \n",
    "                               source = \"A\", # 起点\n",
    "                               weight=\"weight\")\n",
    "print(path_from_A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3addaf5b-1f62-4436-bc5b-8cfe927717a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'A': 0, 'B': 4, 'H': 8, 'G': 9, 'F': 11, 'C': 12, 'I': 14, 'D': 19, 'E': 21}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最短距离值\n",
    "nx.shortest_path_length(G, \n",
    "                        source = \"A\", # 始点\n",
    "                        weight=\"weight\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96e84fab-31f3-4704-b127-02caf90398c1",
   "metadata": {},
   "source": [
    "## 终点为E的所有最短路径"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "19c1d088-3119-44e0-8106-3a875f201ad5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'E': ['E'], 'D': ['D', 'E'], 'F': ['F', 'E'], 'C': ['C', 'F', 'E'], 'G': ['G', 'F', 'E'], 'H': ['H', 'G', 'F', 'E'], 'I': ['I', 'C', 'F', 'E'], 'A': ['A', 'H', 'G', 'F', 'E'], 'B': ['B', 'C', 'F', 'E']}\n"
     ]
    }
   ],
   "source": [
    "path_2_E = nx.shortest_path(G, \n",
    "                            target = \"E\", # 终点\n",
    "                            weight=\"weight\")\n",
    "# nx.single_source_shortest_path()\n",
    "print(path_2_E)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "3dec8dbe-e53f-450a-b5a6-94868df6cca8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'E': 0, 'D': 9, 'F': 10, 'G': 12, 'H': 13, 'C': 14, 'I': 16, 'A': 21, 'B': 22}"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最短距离值\n",
    "nx.shortest_path_length(G, \n",
    "                        target = \"E\", # 终点\n",
    "                        weight=\"weight\")\n",
    "# nx.single_source_shortest_path_length()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37af2533-f594-48e6-b367-19b0d6793af0",
   "metadata": {},
   "source": [
    "## 图中任意两点所有最短路径"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "eb825c91-afdc-48e3-98a2-9630da6e74e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "path_all = nx.shortest_path(G, \n",
    "                            weight=\"weight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "ccdc00e8-fd4c-4137-b76a-1616cb6561a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path_all\n",
    "# path_all.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "413a7ece-4328-4404-b4e2-4f1c95c3788f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['A', 'H', 'G', 'F', 'E']"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path_all['A']['E']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "909760e1-bec6-4eb7-80ba-06c4afdb1b88",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\james\\AppData\\Local\\Temp\\ipykernel_3828\\3100065470.py:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n",
      "  Shortest_path_matrix = np.array([[v[j] for j in list(path_all.keys())]\n"
     ]
    }
   ],
   "source": [
    "# Shortest_path_matrix = np.array([[v[j] for j in list(path_all.keys())] \n",
    "#           for k, v in path_all.items()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "4e06c059-bbbf-4610-bcba-72a35d9b0e5f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Shortest_path_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "691b1892-75a2-416e-baa9-1a31c50b5c0f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 最短距离值\n",
    "distances_all = dict(nx.shortest_path_length(G, \n",
    "                        weight=\"weight\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "0619d0b0-7d5b-4f46-a10c-f4cb58712768",
   "metadata": {},
   "outputs": [],
   "source": [
    "# distances_all"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "28fc9e9c-4d68-4d8a-8e7e-b2b2a820edff",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将成对最短距离整理为矩阵\n",
    "Shortest_D_matrix = np.array([[v[j] for j in list(distances_all.keys())] \n",
    "          for k, v in distances_all.items()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "87968895-c451-4d39-8132-e086800f7a2c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# distances_all.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "0e3a4bf0-c071-43de-add9-2a64defb3b01",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(Shortest_D_matrix, cmap = 'Blues', \n",
    "            annot = True, fmt = '.0f',\n",
    "            xticklabels = list(G.nodes), \n",
    "            yticklabels = list(G.nodes),\n",
    "            linecolor = 'k', square = True,\n",
    "            cbar = False,\n",
    "            linewidths = 0.2)\n",
    "plt.savefig('Shortest_D_matrix.svg')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "681e286c-a3c0-4e83-95e1-0c189a7e0ab9",
   "metadata": {},
   "source": [
    "参考：  \n",
    "https://networkx.org/documentation/stable/auto_examples/algorithms/plot_shortest_path.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f1be05e9-c7c9-4bd3-91f5-2874b85e4e66",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
